package com.wshoto.ocean.service.dao.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.*;

import java.io.*;

/**
 * 示例实体对象
 * 命名规则:表名下划线转驼峰，去掉表前缀后缀
 * 每张表和实体对象中均要包含version、deleted、gmtCreate、gmtModified四个字段
 * 时间类型如无特殊需求，用字符串存储格式为 yyyy-MM-dd HH:mm:ss
 * 主键类型统一为Long类型，生成策略禁止使用数据库自增方式，一律使用雪花算法生成，mybatis-boot-starter包中已配置好，默认就是雪花算法生成的Id
 *
 * @author Lee
 */
@Setter
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "t_app_info")
public class AppInfo implements Serializable {

    /**
     * APP ID
     */
    @TableId(value = "id")
    private Long id;

    /**
     * 用户ID
     */
    @TableField(value = "user_id")
    private Long userId;

    /**
     * 应用名称
     */
    @TableField(value = "app_name")
    private String appName;

    /**
     * 类型
     */
    @TableField(value = "type")
    private String type;

    /**
     * 密钥
     */
    @TableField(value = "secret")
    private String secret;

    /**
     * 用户备注
     */
    @TableField(value = "remark")
    private String remark;


    /***************************************************通用字段*****************************************************************/

    /**
     * 数据版本号
     */
    @Version
    @TableField(fill = FieldFill.INSERT, value = "version", exist = true)
    private Integer version;

    /**
     * 逻辑删除标识
     */
    @TableLogic
    @TableField(fill = FieldFill.INSERT, value = "deleted", exist = true)
    private Integer deleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT, value = "gmt_create", exist = true)
    private String gmtCreate;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE, value = "gmt_modified", exist = true)
    private String gmtModified;
}
